/* 
 * Copyright (C) 2013 The Drycake Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.thedrycake.tempincity.city;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

import com.thedrycake.tempincity.city.impl.OpenWeatherCity;
import com.thedrycake.tempincity.city.impl.Skelleftea;
import com.thedrycake.tempincity.util.StringUtils;

public final class Cities {

	public static final City DEFAULT_CITY;

	private static final Map<String, City> sCityMap = new HashMap<String, City>();

	static {
		DEFAULT_CITY = new Skelleftea();
		addCity(DEFAULT_CITY);
		addCity(new OpenWeatherCity("Alby", 7931985));
		addCity(new OpenWeatherCity("Alfta", 2726939));
		addCity(new OpenWeatherCity("Alingsås", 2726756));
		addCity(new OpenWeatherCity("Alunda", 2599289));
		addCity(new OpenWeatherCity("Alvesta", 2726314));
		addCity(new OpenWeatherCity("Anderstorp", 2726026));
		addCity(new OpenWeatherCity("Aneby", 2726005));
		addCity(new OpenWeatherCity("Arboga", 2725471));
		addCity(new OpenWeatherCity("Arbrå", 2725456));
		addCity(new OpenWeatherCity("Arjeplog", 2725372));
		addCity(new OpenWeatherCity("Arlöv", 2725336));
		addCity(new OpenWeatherCity("Arnö", 2725271));
		addCity(new OpenWeatherCity("Arvidsjaur", 2725136));
		addCity(new OpenWeatherCity("Arvika", 2725123));
		addCity(new OpenWeatherCity("Avesta", 2724231));
		addCity(new OpenWeatherCity("Bankeryd", 2723503));
		addCity(new OpenWeatherCity("Bara", 2723488));
		addCity(new OpenWeatherCity("Bengtsfors", 2723079));
		addCity(new OpenWeatherCity("Bergnäset", 606649));
		addCity(new OpenWeatherCity("Bergshamra", 2722742));
		addCity(new OpenWeatherCity("Bergsviken", 606638));
		addCity(new OpenWeatherCity("Billdal", 2722570));
		addCity(new OpenWeatherCity("Billesholm", 2722563));
		addCity(new OpenWeatherCity("Bjuv", 2721534));
		addCity(new OpenWeatherCity("Bjärnum", 2722363));
		addCity(new OpenWeatherCity("Bjärred", 2722362));
		addCity(new OpenWeatherCity("Björklinge", 2599415));
		addCity(new OpenWeatherCity("Bodafors", 2721035));
		addCity(new OpenWeatherCity("Boden", 606531));
		addCity(new OpenWeatherCity("Bollebygd", 2720689));
		addCity(new OpenWeatherCity("Bollnäs", 2720679));
		addCity(new OpenWeatherCity("Bollstabruk", 2720670));
		addCity(new OpenWeatherCity("Boo", 2721259));
		addCity(new OpenWeatherCity("Borensberg", 2720485));
		addCity(new OpenWeatherCity("Borgholm", 2720437));
		addCity(new OpenWeatherCity("Borlänge", 2720383));
		addCity(new OpenWeatherCity("Borås", 2720501));
		addCity(new OpenWeatherCity("Boxholm", 2720037));
		addCity(new OpenWeatherCity("Brevik", 2719312));
		addCity(new OpenWeatherCity("Bro", 2719245));
		addCity(new OpenWeatherCity("Broby", 2719212));
		addCity(new OpenWeatherCity("Bromma", 2719111));
		addCity(new OpenWeatherCity("Bromölla", 2719106));
		addCity(new OpenWeatherCity("Brunflo", 2718991));
		addCity(new OpenWeatherCity("Brunna", 2718975));
		addCity(new OpenWeatherCity("Bunkeflostrand", 2718759));
		addCity(new OpenWeatherCity("Bureå", 606370));
		addCity(new OpenWeatherCity("Bålsta", 2723567));
		addCity(new OpenWeatherCity("Bårslöv", 2723350));
		addCity(new OpenWeatherCity("Båstad", 2723287));
		addCity(new OpenWeatherCity("Charlottenberg", 2718393));
		addCity(new OpenWeatherCity("Dalby", 2718245));
		addCity(new OpenWeatherCity("Dalsjöfors", 2718144));
		addCity(new OpenWeatherCity("Degerfors", 2717884));
		addCity(new OpenWeatherCity("Deje", 2717842));
		addCity(new OpenWeatherCity("Delsbo", 2717824));
		addCity(new OpenWeatherCity("Djursholm", 2717517));
		addCity(new OpenWeatherCity("Ed", 2716968));
		addCity(new OpenWeatherCity("Edsbyn", 2716863));
		addCity(new OpenWeatherCity("Ekerö", 2716586));
		addCity(new OpenWeatherCity("Eksjö", 2716437));
		addCity(new OpenWeatherCity("Emmaboda", 2716281));
		addCity(new OpenWeatherCity("Enköping", 2716166));
		addCity(new OpenWeatherCity("Eriksberg", 2716085));
		addCity(new OpenWeatherCity("Eskilstuna", 2715953));
		addCity(new OpenWeatherCity("Eslöv", 2715946));
		addCity(new OpenWeatherCity("Fagersta", 2715656));
		addCity(new OpenWeatherCity("Falkenberg", 2715573));
		addCity(new OpenWeatherCity("Falköping", 2715568));
		addCity(new OpenWeatherCity("Falun", 2715459));
		addCity(new OpenWeatherCity("Filipstad", 2715081));
		addCity(new OpenWeatherCity("Finspång", 2714903));
		addCity(new OpenWeatherCity("Fisksätra", 3336566));
		addCity(new OpenWeatherCity("Fittja", 2714795));
		addCity(new OpenWeatherCity("Fjugesta", 2714618));
		addCity(new OpenWeatherCity("Fjärås kyrkby", 2714678));
		addCity(new OpenWeatherCity("Flen", 2714401));
		addCity(new OpenWeatherCity("Forserum", 2713974));
		addCity(new OpenWeatherCity("Forshaga", 2713971));
		addCity(new OpenWeatherCity("Frillesås", 2713679));
		addCity(new OpenWeatherCity("Fristad", 2713659));
		addCity(new OpenWeatherCity("Fritsla", 2713656));
		addCity(new OpenWeatherCity("Frövi", 2713516));
		addCity(new OpenWeatherCity("Furulund", 2713385));
		addCity(new OpenWeatherCity("Fyllinge", 2713350));
		addCity(new OpenWeatherCity("Färjestaden", 2715324));
		addCity(new OpenWeatherCity("Förslöv", 2713943));
		addCity(new OpenWeatherCity("Gamleby", 2712988));
		addCity(new OpenWeatherCity("Gammelstad", 606072));
		addCity(new OpenWeatherCity("Genarp", 2712373));
		addCity(new OpenWeatherCity("Gimo", 2667328));
		addCity(new OpenWeatherCity("Gislaved", 2712045));
		addCity(new OpenWeatherCity("Gnesta", 2711798));
		addCity(new OpenWeatherCity("Gnosjö", 2711790));
		addCity(new OpenWeatherCity("Grums", 2710343));
		addCity(new OpenWeatherCity("Gråbo", 2711451));
		addCity(new OpenWeatherCity("Grängesberg", 2711256));
		addCity(new OpenWeatherCity("Gränna", 2711174));
		addCity(new OpenWeatherCity("Grästorp", 2710885));
		addCity(new OpenWeatherCity("Gustavsberg", 2709628));
		addCity(new OpenWeatherCity("Gällivare", 606086));
		addCity(new OpenWeatherCity("Gävle", 2712414));
		addCity(new OpenWeatherCity("Göteborg", 2711537));
		addCity(new OpenWeatherCity("Götene", 2711526));
		addCity(new OpenWeatherCity("Habo", 2709494));
		addCity(new OpenWeatherCity("Hagfors", 2709214));
		addCity(new OpenWeatherCity("Hallsberg", 2708511));
		addCity(new OpenWeatherCity("Hallstahammar", 2708429));
		addCity(new OpenWeatherCity("Hallstavik", 2708426));
		addCity(new OpenWeatherCity("Halmstad", 2708365));
		addCity(new OpenWeatherCity("Handen", 2708016));
		addCity(new OpenWeatherCity("Haninge", 2707953));
		addCity(new OpenWeatherCity("Haparanda", 605859));
		addCity(new OpenWeatherCity("Harnösand", 2707684));
		addCity(new OpenWeatherCity("Heby", 2707057));
		addCity(new OpenWeatherCity("Hedemora", 2706982));
		addCity(new OpenWeatherCity("Helsingborg", 2706767));
		addCity(new OpenWeatherCity("Hemmesta", 2706713));
		addCity(new OpenWeatherCity("Herrestad", 2706543));
		addCity(new OpenWeatherCity("Herrljunga", 2706523));
		addCity(new OpenWeatherCity("Hindås", 2706392));
		addCity(new OpenWeatherCity("Hittarp", 2706323));
		addCity(new OpenWeatherCity("Hjo", 2706184));
		addCity(new OpenWeatherCity("Hjuvik", 2706100));
		addCity(new OpenWeatherCity("Hjärup", 2666264));
		addCity(new OpenWeatherCity("Hofors", 2706057));
		addCity(new OpenWeatherCity("Hofterup", 2706054));
		addCity(new OpenWeatherCity("Hollviken", 2705402));
		addCity(new OpenWeatherCity("Holmsund", 605676));
		addCity(new OpenWeatherCity("Hovmantorp", 2704654));
		addCity(new OpenWeatherCity("Hovsta", 2704638));
		addCity(new OpenWeatherCity("Huddinge", 2704620));
		addCity(new OpenWeatherCity("Hudiksvall", 2704613));
		addCity(new OpenWeatherCity("Hultsfred", 2704398));
		addCity(new OpenWeatherCity("Huskvarna", 2704136));
		addCity(new OpenWeatherCity("Hyllinge", 2704042));
		addCity(new OpenWeatherCity("Hyltebruk", 2704008));
		addCity(new OpenWeatherCity("Häljarp", 2708889));
		addCity(new OpenWeatherCity("Hällbybrunn", 2708710));
		addCity(new OpenWeatherCity("Hällefors", 2708665));
		addCity(new OpenWeatherCity("Hässleholm", 2707399));
		addCity(new OpenWeatherCity("Höganäs", 2706003));
		addCity(new OpenWeatherCity("Högsby", 2705718));
		addCity(new OpenWeatherCity("Hökåsen", 2705562));
		addCity(new OpenWeatherCity("Hönö", 2705075));
		addCity(new OpenWeatherCity("Hörby", 2705049));
		addCity(new OpenWeatherCity("Hörnefors", 2704956));
		addCity(new OpenWeatherCity("Höör", 2705055));
		addCity(new OpenWeatherCity("Iggesund", 2703827));
		addCity(new OpenWeatherCity("Insjön", 2703546));
		addCity(new OpenWeatherCity("Irsta", 2703525));
		addCity(new OpenWeatherCity("Jakobsberg", 2703396));
		addCity(new OpenWeatherCity("Johannedal", 2703038));
		addCity(new OpenWeatherCity("Jokkmokk", 2702997));
		addCity(new OpenWeatherCity("Jordbro", 2702908));
		addCity(new OpenWeatherCity("Jönköping", 2702979));
		addCity(new OpenWeatherCity("Kalix", 605393));
		addCity(new OpenWeatherCity("Kallinge", 2702405));
		addCity(new OpenWeatherCity("Kalmar", 2702261));
		addCity(new OpenWeatherCity("Karlsborg", 2701757));
		addCity(new OpenWeatherCity("Karlshamn", 2701727));
		addCity(new OpenWeatherCity("Karlskoga", 2701715));
		addCity(new OpenWeatherCity("Karlskrona", 2701713));
		addCity(new OpenWeatherCity("Karlstad", 2701680));
		addCity(new OpenWeatherCity("Katrineholm", 2701223));
		addCity(new OpenWeatherCity("Kil", 2700960));
		addCity(new OpenWeatherCity("Kinna", 2700839));
		addCity(new OpenWeatherCity("Kiruna", 605155));
		addCity(new OpenWeatherCity("Kisa", 2700800));
		addCity(new OpenWeatherCity("Kista", 2700791));
		addCity(new OpenWeatherCity("Klippan", 2700487));
		addCity(new OpenWeatherCity("Knislinge", 2700218));
		addCity(new OpenWeatherCity("Knivsta", 2700199));
		addCity(new OpenWeatherCity("Kolsva", 2699879));
		addCity(new OpenWeatherCity("Kopparberg", 2699768));
		addCity(new OpenWeatherCity("Kramfors", 2699394));
		addCity(new OpenWeatherCity("Kristianstad", 2699310));
		addCity(new OpenWeatherCity("Kristinehamn", 2699282));
		addCity(new OpenWeatherCity("Krokek", 2699206));
		addCity(new OpenWeatherCity("Krokom", 2699176));
		addCity(new OpenWeatherCity("Kumla", 2698767));
		addCity(new OpenWeatherCity("Kummelnäs", 2698745));
		addCity(new OpenWeatherCity("Kungsbacka", 2698729));
		addCity(new OpenWeatherCity("Kungshamn", 2698697));
		addCity(new OpenWeatherCity("Kungsängen", 2698733));
		addCity(new OpenWeatherCity("Kungsör", 2698681));
		addCity(new OpenWeatherCity("Kungälv", 2698739));
		addCity(new OpenWeatherCity("Kvissleby", 2698242));
		addCity(new OpenWeatherCity("Kåge", 605428));
		addCity(new OpenWeatherCity("Kållered", 2702449));
		addCity(new OpenWeatherCity("Kävlinge", 2701096));
		addCity(new OpenWeatherCity("Köping", 2699791));
		addCity(new OpenWeatherCity("Laholm", 2697861));
		addCity(new OpenWeatherCity("Landskrona", 2697720));
		addCity(new OpenWeatherCity("Landvetter", 2697703));
		addCity(new OpenWeatherCity("Laxå", 2696804));
		addCity(new OpenWeatherCity("Leksand", 2696650));
		addCity(new OpenWeatherCity("Lerum", 2696503));
		addCity(new OpenWeatherCity("Lessebo", 2696473));
		addCity(new OpenWeatherCity("Lidingö", 2696334));
		addCity(new OpenWeatherCity("Lidköping", 2696329));
		addCity(new OpenWeatherCity("Lilla Edet", 2696059));
		addCity(new OpenWeatherCity("Lindesberg", 2694893));
		addCity(new OpenWeatherCity("Lindo", 2694838));
		addCity(new OpenWeatherCity("Lindome", 2694831));
		addCity(new OpenWeatherCity("Lindsdal", 2694808));
		addCity(new OpenWeatherCity("Linghem", 2694779));
		addCity(new OpenWeatherCity("Linköping", 2694762));
		addCity(new OpenWeatherCity("Ljungby", 2694560));
		addCity(new OpenWeatherCity("Ljungbyhed", 2694554));
		addCity(new OpenWeatherCity("Ljunghusen", 2694537));
		addCity(new OpenWeatherCity("Ljungsbro", 2694529));
		addCity(new OpenWeatherCity("Ljungskile", 2694522));
		addCity(new OpenWeatherCity("Ljusdal", 2694503));
		addCity(new OpenWeatherCity("Ljusne", 2694475));
		addCity(new OpenWeatherCity("Lomma", 2694264));
		addCity(new OpenWeatherCity("Ludvika", 2693759));
		addCity(new OpenWeatherCity("Luleå", 604490));
		addCity(new OpenWeatherCity("Lund", 2693678));
		addCity(new OpenWeatherCity("Lycksele", 2693347));
		addCity(new OpenWeatherCity("Lysekil", 2693301));
		addCity(new OpenWeatherCity("Löddeköpinge", 2694375));
		addCity(new OpenWeatherCity("Majorna", 6619708));
		addCity(new OpenWeatherCity("Mala", 2693152));
		addCity(new OpenWeatherCity("Malmberget", 604419));
		addCity(new OpenWeatherCity("Malmköping", 2692972));
		addCity(new OpenWeatherCity("Malmslätt", 2692943));
		addCity(new OpenWeatherCity("Malmö", 2692969));
		addCity(new OpenWeatherCity("Malung", 2692876));
		addCity(new OpenWeatherCity("Mantorp", 2692748));
		addCity(new OpenWeatherCity("Mariefred", 2692633));
		addCity(new OpenWeatherCity("Mariestad", 2692613));
		addCity(new OpenWeatherCity("Markaryd", 2692596));
		addCity(new OpenWeatherCity("Matfors", 2692349));
		addCity(new OpenWeatherCity("Mellerud", 2692049));
		addCity(new OpenWeatherCity("Mjölby", 2691743));
		addCity(new OpenWeatherCity("Mockfjärd", 2691602));
		addCity(new OpenWeatherCity("Mora", 2691400));
		addCity(new OpenWeatherCity("Morrum", 2691271));
		addCity(new OpenWeatherCity("Motala", 2690960));
		addCity(new OpenWeatherCity("Mullsjö", 2690901));
		addCity(new OpenWeatherCity("Munka-Ljungby", 2690866));
		addCity(new OpenWeatherCity("Munkedal", 2690843));
		addCity(new OpenWeatherCity("Munkfors", 2690829));
		addCity(new OpenWeatherCity("Märsta", 2692475));
		addCity(new OpenWeatherCity("Mölndal", 2691459));
		addCity(new OpenWeatherCity("Mölnlycke", 2691440));
		addCity(new OpenWeatherCity("Mönsterås", 2691407));
		addCity(new OpenWeatherCity("Nacka", 2690580));
		addCity(new OpenWeatherCity("Njurundabommen", 2689580));
		addCity(new OpenWeatherCity("Nora", 2689471));
		addCity(new OpenWeatherCity("Norberg", 2689452));
		addCity(new OpenWeatherCity("Nordmaling", 2689336));
		addCity(new OpenWeatherCity("Norrköping", 2688368));
		addCity(new OpenWeatherCity("Norrtälje", 2688250));
		addCity(new OpenWeatherCity("Norsjö", 2688172));
		addCity(new OpenWeatherCity("Nybro", 2687902));
		addCity(new OpenWeatherCity("Nykvarn", 2687690));
		addCity(new OpenWeatherCity("Nyköping", 2687700));
		addCity(new OpenWeatherCity("Nynäshamn", 2687636));
		addCity(new OpenWeatherCity("Nässjös", 2690170));
		addCity(new OpenWeatherCity("Nättraby", 2690061));
		addCity(new OpenWeatherCity("Nödinge-Nol", 3336569));
		addCity(new OpenWeatherCity("Obbola", 603919));
		addCity(new OpenWeatherCity("Ockelbo", 2687517));
		addCity(new OpenWeatherCity("Olofstorp", 2687063));
		addCity(new OpenWeatherCity("Olofström", 2687062));
		addCity(new OpenWeatherCity("Onsala", 6943587));
		addCity(new OpenWeatherCity("Orsa", 2686380));
		addCity(new OpenWeatherCity("Osby", 2686209));
		addCity(new OpenWeatherCity("Oskarshamn", 2686162));
		addCity(new OpenWeatherCity("Oskarström", 2686160));
		addCity(new OpenWeatherCity("Oxelösund", 2684653));
		addCity(new OpenWeatherCity("Oxie", 2684636));
		addCity(new OpenWeatherCity("Pajala", 603761));
		addCity(new OpenWeatherCity("Partille", 2684395));
		addCity(new OpenWeatherCity("Pershagen", 2684231));
		addCity(new OpenWeatherCity("Perstorp", 2684213));
		addCity(new OpenWeatherCity("Piteå", 603570));
		addCity(new OpenWeatherCity("Påarp", 2684593));
		addCity(new OpenWeatherCity("Resarö", 2682706));
		addCity(new OpenWeatherCity("Rimbo", 2682570));
		addCity(new OpenWeatherCity("Rimforsa", 2682569));
		addCity(new OpenWeatherCity("Robertsfors", 603303));
		addCity(new OpenWeatherCity("Ronneby", 2681825));
		addCity(new OpenWeatherCity("Rottne", 2681368));
		addCity(new OpenWeatherCity("Rydebäck", 2680969));
		addCity(new OpenWeatherCity("Råneå", 603035));
		addCity(new OpenWeatherCity("Röbäck", 603304));
		addCity(new OpenWeatherCity("Rödeby", 2682155));
		addCity(new OpenWeatherCity("Röttvik", 2682995));
		addCity(new OpenWeatherCity("Sala", 2680662));
		addCity(new OpenWeatherCity("Salem", 6930653));
		addCity(new OpenWeatherCity("Saltsjöbaden", 2680460));
		addCity(new OpenWeatherCity("Sandared", 2680352));
		addCity(new OpenWeatherCity("Sandarne", 2680350));
		addCity(new OpenWeatherCity("Sandviken", 2680075));
		addCity(new OpenWeatherCity("Segeltorp", 2679567));
		addCity(new OpenWeatherCity("Sigtuna", 2679302));
		addCity(new OpenWeatherCity("Simrishamn", 2679107));
		addCity(new OpenWeatherCity("Sjuntorp", 2678687));
		addCity(new OpenWeatherCity("Sjöberg", 2678926));
		addCity(new OpenWeatherCity("Sjöbo", 2678913));
		addCity(new OpenWeatherCity("Sjömarken", 2678804));
		addCity(new OpenWeatherCity("Skanör med Falsterbo", 3336568));
		addCity(new OpenWeatherCity("Skara", 2678210));
		addCity(new OpenWeatherCity("Skare", 2678153));
		addCity(new OpenWeatherCity("Skattkärr", 2677869));
		addCity(new OpenWeatherCity("Skelleftehamn", 602909));
		addCity(new OpenWeatherCity("Skillingaryd", 2677644));
		addCity(new OpenWeatherCity("Skinnskatteberg", 2677593));
		addCity(new OpenWeatherCity("Skoghall", 2677456));
		addCity(new OpenWeatherCity("Skogstorp", 2677370));
		addCity(new OpenWeatherCity("Skultorp", 2677063));
		addCity(new OpenWeatherCity("Skultuna", 2677062));
		addCity(new OpenWeatherCity("Skurup", 2677025));
		addCity(new OpenWeatherCity("Skutskär", 2677019));
		addCity(new OpenWeatherCity("Skänninge", 2678265));
		addCity(new OpenWeatherCity("Skärblacka", 2678173));
		addCity(new OpenWeatherCity("Skärhamn", 2678129));
		addCity(new OpenWeatherCity("Skövde", 2677234));
		addCity(new OpenWeatherCity("Smedby", 2676592));
		addCity(new OpenWeatherCity("Smedjebacken", 2676586));
		addCity(new OpenWeatherCity("Smålandsstenar", 2676644));
		addCity(new OpenWeatherCity("Sollefteå", 2675416));
		addCity(new OpenWeatherCity("Sollentuna", 2675408));
		addCity(new OpenWeatherCity("Solna", 2675397));
		addCity(new OpenWeatherCity("Staffanstorp", 2674649));
		addCity(new OpenWeatherCity("Stenhamra", 2674209));
		addCity(new OpenWeatherCity("Stenkullen", 2674181));
		addCity(new OpenWeatherCity("Stenungsund", 2673875));
		addCity(new OpenWeatherCity("Stigtomta", 2673829));
		addCity(new OpenWeatherCity("Stockholm", 2673730));
		addCity(new OpenWeatherCity("Stockvik", 2673693));
		addCity(new OpenWeatherCity("Stora Höga", 2673076));
		addCity(new OpenWeatherCity("Stora", 2673621));
		addCity(new OpenWeatherCity("Storfors", 2672053));
		addCity(new OpenWeatherCity("Storuman", 2671530));
		addCity(new OpenWeatherCity("Storvik", 602566));
		addCity(new OpenWeatherCity("Storvreta", 2671490));
		addCity(new OpenWeatherCity("Strängnäs", 2671392));
		addCity(new OpenWeatherCity("Strömsnäsbruk", 2671230));
		addCity(new OpenWeatherCity("Strömstad", 2671224));
		addCity(new OpenWeatherCity("Strömsund", 2671221));
		addCity(new OpenWeatherCity("Sturefors", 2671060));
		addCity(new OpenWeatherCity("Sundbyberg", 2670879));
		addCity(new OpenWeatherCity("Sundsbruk", 2670833));
		addCity(new OpenWeatherCity("Sundsvall", 2670781));
		addCity(new OpenWeatherCity("Sunne", 2670710));
		addCity(new OpenWeatherCity("Surahammar", 2670613));
		addCity(new OpenWeatherCity("Surte", 2670603));
		addCity(new OpenWeatherCity("Svalöv", 2670542));
		addCity(new OpenWeatherCity("Svedala", 2670128));
		addCity(new OpenWeatherCity("Sveg", 2670061));
		addCity(new OpenWeatherCity("Svenljunga", 2670044));
		addCity(new OpenWeatherCity("Svärtinge", 2670278));
		addCity(new OpenWeatherCity("Säffle", 2680764));
		addCity(new OpenWeatherCity("Särö", 2679920));
		addCity(new OpenWeatherCity("Säter", 2679855));
		addCity(new OpenWeatherCity("Sävar", 603037));
		addCity(new OpenWeatherCity("Sävast", 603448));
		addCity(new OpenWeatherCity("Sävja", 2679721));
		addCity(new OpenWeatherCity("Sävsjö", 2679698));
		addCity(new OpenWeatherCity("Söderhamn", 2676224));
		addCity(new OpenWeatherCity("Söderköping", 2676215));
		addCity(new OpenWeatherCity("Södertälje", 2676176));
		addCity(new OpenWeatherCity("Södra Sandby", 2675691));
		addCity(new OpenWeatherCity("Södra Sunderbyn", 602804));
		addCity(new OpenWeatherCity("Sölvesborg", 2675365));
		addCity(new OpenWeatherCity("Söråker", 2675280));
		addCity(new OpenWeatherCity("Taberg", 2669788));
		addCity(new OpenWeatherCity("Tenhult", 2669193));
		addCity(new OpenWeatherCity("Tibro", 2669118));
		addCity(new OpenWeatherCity("Tidaholm", 2669113));
		addCity(new OpenWeatherCity("Tierp", 2669098));
		addCity(new OpenWeatherCity("Tillberga", 2669086));
		addCity(new OpenWeatherCity("Timrå", 2669047));
		addCity(new OpenWeatherCity("Tingsryd", 2669019));
		addCity(new OpenWeatherCity("Tollarp", 2668429));
		addCity(new OpenWeatherCity("Tomelilla", 2668365));
		addCity(new OpenWeatherCity("Torsby", 2667876));
		addCity(new OpenWeatherCity("Torshälla", 2667847));
		addCity(new OpenWeatherCity("Torslanda", 2667809));
		addCity(new OpenWeatherCity("Tranemo", 2667599));
		addCity(new OpenWeatherCity("Tranås", 2667628));
		addCity(new OpenWeatherCity("Trelleborg", 2667402));
		addCity(new OpenWeatherCity("Trollhättan", 2667303));
		addCity(new OpenWeatherCity("Trosa", 2667253));
		addCity(new OpenWeatherCity("Träslövsläge", 2667499));
		addCity(new OpenWeatherCity("Tullinge", 2667109));
		addCity(new OpenWeatherCity("Tumba", 2667094));
		addCity(new OpenWeatherCity("Tvååker", 2666950));
		addCity(new OpenWeatherCity("Tyringe", 2666771));
		addCity(new OpenWeatherCity("Täby", 2669772));
		addCity(new OpenWeatherCity("Töreboda", 2668247));
		addCity(new OpenWeatherCity("Uddevalla", 2666670));
		addCity(new OpenWeatherCity("Ulricehamn", 2666493));
		addCity(new OpenWeatherCity("Umeå", 602150));
		addCity(new OpenWeatherCity("Upplands Väsby", 2666238));
		addCity(new OpenWeatherCity("Uppsala", 2666199));
		addCity(new OpenWeatherCity("Ursviken", 602137));
		addCity(new OpenWeatherCity("Vadstena", 2665902));
		addCity(new OpenWeatherCity("Vaggeryd", 2665857));
		addCity(new OpenWeatherCity("Vagnhärad", 2665844));
		addCity(new OpenWeatherCity("Valberg", 2665708));
		addCity(new OpenWeatherCity("Valbo", 2665691));
		addCity(new OpenWeatherCity("Valdemarsvik", 2665675));
		addCity(new OpenWeatherCity("Vallentuna", 2665452));
		addCity(new OpenWeatherCity("Vansbro", 2665063));
		addCity(new OpenWeatherCity("Vara", 2665018));
		addCity(new OpenWeatherCity("Varberg", 2664996));
		addCity(new OpenWeatherCity("Vargön", 2664921));
		addCity(new OpenWeatherCity("Vaxholm", 2663540));
		addCity(new OpenWeatherCity("Veberöd", 2663514));
		addCity(new OpenWeatherCity("Veddige", 2663482));
		addCity(new OpenWeatherCity("Vejbystrand", 2663432));
		addCity(new OpenWeatherCity("Vellinge", 2663399));
		addCity(new OpenWeatherCity("Vetlanda", 2663293));
		addCity(new OpenWeatherCity("Vi", 2663161));
		addCity(new OpenWeatherCity("Viken", 601972));
		addCity(new OpenWeatherCity("Vikingstad", 2662996));
		addCity(new OpenWeatherCity("Vilhelmina", 2662935));
		addCity(new OpenWeatherCity("Vimmerby", 2662881));
		addCity(new OpenWeatherCity("Vindeln", 2662851));
		addCity(new OpenWeatherCity("Vingåker", 2662830));
		addCity(new OpenWeatherCity("Vinslöv", 2662778));
		addCity(new OpenWeatherCity("Visby", 2662689));
		addCity(new OpenWeatherCity("Viskafors", 2662666));
		addCity(new OpenWeatherCity("Vårgårda", 2664939));
		addCity(new OpenWeatherCity("Vårsta", 2664783));
		addCity(new OpenWeatherCity("Vänersborg", 2665171));
		addCity(new OpenWeatherCity("Vännäs", 2665093));
		addCity(new OpenWeatherCity("Värnamo", 2664855));
		addCity(new OpenWeatherCity("Västerhaninge", 2664339));
		addCity(new OpenWeatherCity("Västervik", 2664203));
		addCity(new OpenWeatherCity("Västerås", 2664454));
		addCity(new OpenWeatherCity("Växjö", 2663536));
		addCity(new OpenWeatherCity("Ystad", 2662149));
		addCity(new OpenWeatherCity("Åby", 2727594));
		addCity(new OpenWeatherCity("Åhus", 2727363));
		addCity(new OpenWeatherCity("Åkarp", 2727314));
		addCity(new OpenWeatherCity("Åkers styckebruk", 2727222));
		addCity(new OpenWeatherCity("Åkersberga", 2727234));
		addCity(new OpenWeatherCity("Åmål", 2726240));
		addCity(new OpenWeatherCity("Ånge", 2725924));
		addCity(new OpenWeatherCity("Årjäng", 2725379));
		addCity(new OpenWeatherCity("Årsta", 2725201));
		addCity(new OpenWeatherCity("Åsa", 2725065));
		addCity(new OpenWeatherCity("Åseda", 2724962));
		addCity(new OpenWeatherCity("Åsele", 2724958));
		addCity(new OpenWeatherCity("Åskersund", 2724778));
		addCity(new OpenWeatherCity("Åstorp", 2724435));
		addCity(new OpenWeatherCity("Åtvidaberg", 2724321));
		addCity(new OpenWeatherCity("Älmhult", 2726576));
		addCity(new OpenWeatherCity("Älta", 2726394));
		addCity(new OpenWeatherCity("Älvsbyn", 606834));
		addCity(new OpenWeatherCity("Älvängen", 2726347));
		addCity(new OpenWeatherCity("Ängelholm", 2725901));
		addCity(new OpenWeatherCity("Öckerö", 2687509));
		addCity(new OpenWeatherCity("Ödeshög", 2687420));
		addCity(new OpenWeatherCity("Ödåkra", 2687498));
		addCity(new OpenWeatherCity("Öjersjö", 2687272));
		addCity(new OpenWeatherCity("Örbyhus", 2686674));
		addCity(new OpenWeatherCity("Örebro", 2686657));
		addCity(new OpenWeatherCity("Örkelljunga", 2686596));
		addCity(new OpenWeatherCity("Örnsköldsvik", 2686469));
		addCity(new OpenWeatherCity("Ösmo", 2686153));
		addCity(new OpenWeatherCity("Österbybruk", 2685903));
		addCity(new OpenWeatherCity("Östermalm", 2685828));
		addCity(new OpenWeatherCity("Östersund", 2685750));
		addCity(new OpenWeatherCity("Östhammar", 2685699));
		addCity(new OpenWeatherCity("Övertorneå", 603814));
	}

	private static void addCity(City city) {
		if (city != null) {
			sCityMap.put(city.getName(), city);
		}
	}

	private Cities() {
	}

	public static City getCityByName(String cityName) {
		return getCityByName(cityName, DEFAULT_CITY);
	}

	public static City getCityByName(String cityName, City defaultCity) {
		if (!StringUtils.isNullOrEmpty(cityName)
				&& sCityMap.containsKey(cityName)) {
			return sCityMap.get(cityName);
		} else {
			return defaultCity;
		}
	}

	public static Collection<City> getCities() {
		return sCityMap.values();
	}

	public static Set<String> getCityNames() {
		return sCityMap.keySet();
	}

}
